home *** CD-ROM | disk | FTP | other *** search
- Path: comma.rhein.de!serpens!not-for-mail
- From: mlelstv@serpens.rhein.de (Michael van Elst)
- Newsgroups: comp.sys.amiga.programmer
- Subject: Re: Demo/game to OS friendly part II
- Date: 1 Feb 1996 11:49:39 +0100
- Organization: dis-
- Message-ID: <4eq5s3$mnn@serpens.rhein.de>
- References: <john.hendrikx.47u5@grafix.xs4all.nl> <PETERM.96Jan29164036@tui.maths.irl.cri.nz> <4ek6bo$84n@xmission.xmission.com> <4ekl5d$51@serpens.rhein.de> <PETERM.96Feb1123338@tui.maths.irl.cri.nz> <4ep546$hpr@serpens.rhein.de> <PETERM.96Feb1205215@tui.maths.irl.cri.nz>
- NNTP-Posting-Host: serpens.rhein.de
-
- peterm@maths.grace.cri.nz (Peter McGavin) writes:
-
- >mlelstv@serpens.rhein.de (Michael van Elst) writes:
- >>peterm@maths.grace.cri.nz (Peter McGavin) writes:
- >>>Current high-level gfx calls have a queue limit of 1 (or less than 1).
- >>
- >>Right. But that's as good as N.
-
- >I assume you mean by creating another task to process the queue.
-
- No, I mean for the interface. A caller now cannot rely on the operation
- being completed which means that you could extend the queue to any
- depth.
-
- >There is a problem with the current implementation that WaitBlit() is
- >CPU-intensive for large blits.
-
- Yes.
-
- >So queuing large gfx operations
- >(perhaps with some smaller operations in the queue as well) eats CPU
- >time.
-
- No, because you usually do not need to call WaitBlit() explicitely.
- The graphics functions do. And if these were using a real queue they
- could Wait() for a signal from the queuer.
-
- >Maybe this can be fixed in the next implementation. (I'm
- >talking about high-level gfx calls, not QBlit().)
-
- Yes. Me too.
-
- >Also, there may be problems queuing some operations like
- >ChangeScreenBuffer() when the Screen is opened by the parent task (or
- >perhaps not --- I don't really know).
-
- This function would need to take care of queued operations. Right.
-
- >>All you need is a proper model for synchronization. This should be
- >>done on either a bitmap or a rastport basis. Graphic operation can then
- >>be completely asynchronous as the driver decides.
-
- >Sorry, I don't follow exactly what you're proposing here.
-
- If you queue an operation and rely on the results you have to synchronize with
- the rendering. Just waiting "for the blitter" works if the blitter is the only
- hardware that you could wait for. For other hardware a WaitBlit() would have
- to synchronize with that hardware. And that is a big waste and WaitBlit()
- becomes slow too. What I propose is a WaitBitMap() that stops your task until
- all rendering done to that bitmap had been completed. After all you are not
- interested into other BitMaps when you want to examine the result (or free
- the BitMap). You would also need a lower-level function that gives you a
- message port or signal bit so that you can Wait() for it concurrently with
- other events.
-
- Regards,
- --
- Michael van Elst
-
- Internet: mlelstv@serpens.rhein.de
- "A potential Snark may lurk in every tree."
-